package vo

import (
	"boy-go/pkg/request"
	"boy-go/pkg/xtime"
	"time"
)

type SysRoleModel struct {
	RoleId            int64           `json:"roleId" form:"roleId"`                       // 角色ID
	RoleName          *string         `json:"roleName" form:"roleName"`                   // 角色名称
	RoleKey           *string         `json:"roleKey" form:"roleKey"`                     // 角色权限字符串
	RoleSort          *int64          `json:"roleSort" form:"roleSort"`                   // 显示顺序
	DataScope         *string         `json:"dataScope" form:"dataScope"`                 // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
	MenuCheckStrictly *bool           `json:"menuCheckStrictly" form:"menuCheckStrictly"` // 菜单树选择项是否关联显示
	DeptCheckStrictly *bool           `json:"deptCheckStrictly" form:"deptCheckStrictly"` // 部门树选择项是否关联显示
	Status            *string         `json:"status" form:"status"`                       // 角色状态（0正常 1停用）
	DelFlag           *string         `json:"delFlag" form:"delFlag"`                     // 删除标志（0代表存在 2代表删除）
	CreateBy          *string         `json:"createBy" form:"createBy"`                   // 创建者
	CreateTime        *string         `json:"createTime" form:"createTime"`               // 创建时间
	UpdateBy          *string         `json:"updateBy" form:"updateBy"`                   // 更新者
	UpdateTime        *string         `json:"updateTime" form:"updateTime"`               // 更新时间
	Remark            *string         `json:"remark" form:"remark"`                       // 备注
	Flag              bool            `json:"flag" form:"flag"`                           // 用户是否存在此角色标识 默认不存在[额外]
	PermissionMap     map[string]bool `json:"permissionMap" form:"permissionMap"`         // 权限标识
}

func (item *SysRoleModel) CreateAt(t *time.Time) {
	item.CreateTime = xtime.TS.Format(t)
}
func (item *SysRoleModel) UpdateAt(t *time.Time) {
	item.UpdateTime = xtime.TS.Format(t)
}

type QuerySysRoleReq struct {
	request.ParamsRequest
	RoleId   *int64  `json:"roleId" form:"roleId"`     // 角色ID
	RoleName *string `json:"roleName" form:"roleName"` // 角色名称
	RoleKey  *string `json:"roleKey" form:"roleKey"`   // 角色权限字符串
	Status   *string `json:"status" form:"status"`     // 角色状态（0正常 1停用）
}
type ListSysRoleRsp struct {
	List  []*SysRoleModel
	Total int64
}

type AddSysRoleReq struct {
	RoleId            int64     `json:"roleId" form:"roleId"`                       // 角色ID
	RoleName          *string   `json:"roleName" form:"roleName"`                   // 角色名称
	RoleKey           *string   `json:"roleKey" form:"roleKey"`                     // 角色权限字符串
	RoleSort          *int64    `json:"roleSort" form:"roleSort"`                   // 显示顺序
	DataScope         *string   `json:"dataScope" form:"dataScope"`                 // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
	MenuCheckStrictly *bool     `json:"menuCheckStrictly" form:"menuCheckStrictly"` // 菜单树选择项是否关联显示
	DeptCheckStrictly *bool     `json:"deptCheckStrictly" form:"deptCheckStrictly"` // 部门树选择项是否关联显示
	Status            *string   `json:"status" form:"status"`                       // 角色状态（0正常 1停用）
	DelFlag           *string   `json:"delFlag" form:"delFlag"`                     // 删除标志（0代表存在 2代表删除）
	CreateBy          *string   `json:"createBy" form:"createBy"`                   // 创建者
	CreateTime        *string   `json:"createTime" form:"createTime"`               // 创建时间
	UpdateBy          *string   `json:"updateBy" form:"updateBy"`                   // 更新者
	UpdateTime        *string   `json:"updateTime" form:"updateTime"`               // 更新时间
	Remark            *string   `json:"remark" form:"remark"`                       // 备注
	MenuIds           []*int64  `json:"menuIds" form:"menuIds"`                     // 菜单组
	DeptIds           []*int64  `json:"deptIds" form:"deptIds"`                     // 部门组（数据权限）
	Permissions       []*string `json:"permissions" form:"permissions"`             // 角色菜单权限
}
type AddSysRoleRsp struct {
	RoleId int64 `json:"roleId" form:"roleId"` // 角色ID
}

type EditSysRoleReq struct {
	RoleId            int64     `json:"roleId" form:"roleId"`                       // 角色ID
	RoleName          *string   `json:"roleName" form:"roleName"`                   // 角色名称
	RoleKey           *string   `json:"roleKey" form:"roleKey"`                     // 角色权限字符串
	RoleSort          *int64    `json:"roleSort" form:"roleSort"`                   // 显示顺序
	DataScope         *string   `json:"dataScope" form:"dataScope"`                 // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
	MenuCheckStrictly *bool     `json:"menuCheckStrictly" form:"menuCheckStrictly"` // 菜单树选择项是否关联显示
	DeptCheckStrictly *bool     `json:"deptCheckStrictly" form:"deptCheckStrictly"` // 部门树选择项是否关联显示
	Status            *string   `json:"status" form:"status"`                       // 角色状态（0正常 1停用）
	DelFlag           *string   `json:"delFlag" form:"delFlag"`                     // 删除标志（0代表存在 2代表删除）
	CreateBy          *string   `json:"createBy" form:"createBy"`                   // 创建者
	CreateTime        *string   `json:"createTime" form:"createTime"`               // 创建时间
	UpdateBy          *string   `json:"updateBy" form:"updateBy"`                   // 更新者
	UpdateTime        *string   `json:"updateTime" form:"updateTime"`               // 更新时间
	Remark            *string   `json:"remark" form:"remark"`                       // 备注
	MenuIds           []*int64  `json:"menuIds" form:"menuIds"`                     // 菜单组
	DeptIds           []*int64  `json:"deptIds" form:"deptIds"`                     // 部门组（数据权限）
	Permissions       []*string `json:"permissions" form:"permissions"`             // 角色菜单权限
}
type EditSysRoleRsp struct {
	RoleId int64 `json:"roleId" form:"roleId"` // 角色ID
}
